From: Roger Pau Monné Date: Thu, 14 Jan 2016 09:43:36 +0000 (+0100) Subject: Revert "libxc: create an initial FPU state for HVM guests" X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~1967 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks:///%22http:/www.example.com/cgi/%22https:/%22bookmarks:/?a=commitdiff_plain;h=d23da94b123a0d9326408c376e5735697bd2d96a;p=xen.git Revert "libxc: create an initial FPU state for HVM guests" This reverts commit d64dbbcc7c9934a46126c59d78536235908377ad: Xen always set the FPU as initialized when loading a HVM context, so libxc has to provide a valid FPU context when setting the CPU registers. This was a stop-gap measure in order to unblock OSSTest Windows 7 failures while a proper fix for the HVM CPU save/restore is being worked on. This can now be reverted because a proper fix is in place and we can signal in the save record whether the FPU is initialized or not. Signed-off-by: Roger Pau Monné Reviewed-by: Andrew Cooper Acked-by: Wei Liu --- diff --git a/tools/libxc/xc_dom_x86.c b/tools/libxc/xc_dom_x86.c index b8d290464b..b65076230e 100644 --- a/tools/libxc/xc_dom_x86.c +++ b/tools/libxc/xc_dom_x86.c @@ -987,27 +987,6 @@ static int vcpu_hvm(struct xc_dom_image *dom) struct hvm_save_descriptor end_d; HVM_SAVE_TYPE(END) end; } bsp_ctx; - /* - * The layout of the fpu context structure is the same for - * both 32 and 64 bits. - */ - struct { - uint16_t fcw; - uint16_t fsw; - uint8_t ftw; - uint8_t rsvd1; - uint16_t fop; - union { - uint64_t addr; - struct { - uint32_t offs; - uint16_t sel; - uint16_t rsvd; - }; - } fip, fdp; - uint32_t mxcsr; - uint32_t mxcsr_mask; - } *fpu_ctxt; uint8_t *full_ctx = NULL; int rc; @@ -1075,23 +1054,6 @@ static int vcpu_hvm(struct xc_dom_image *dom) /* Set the control registers. */ bsp_ctx.cpu.cr0 = X86_CR0_PE | X86_CR0_ET; - /* - * XXX: Set initial FPU state. - * - * This should be removed once Xen is able to know if the - * FPU state saved is valid or not, now Xen always sets - * fpu_initialised to true regardless of the FPU state. - * - * The code below mimics the FPU sate after executing - * fninit - * ldmxcsr 0x1f80 - */ - fpu_ctxt = (typeof(fpu_ctxt))bsp_ctx.cpu.fpu_regs; - - fpu_ctxt->fcw = 0x37f; - fpu_ctxt->ftw = 0xff; - fpu_ctxt->mxcsr = 0x1f80; - /* Set the IP. */ bsp_ctx.cpu.rip = dom->parms.phys_entry;